#pragma once

#define PyObject WeObject
#define PyImport_Import WeImport_Import
#define PyObject_GetAttrString WeObject_GetAttrString
#define PyObject_HEAD WeObject_HEAD
#define PyTypeObject WeTypeObject
#define PyObject_HEAD_INIT WeObject_HEAD_INIT
#define PyString_AsString WeString_AsString
#define PyErr_SetString WeErr_SetString
#define PyTuple_GetItem WeTuple_GetItem
#define PyTuple_Size WeTuple_Size
#define PyDict_New WeDict_New
#define PyDict_SetItem WeDict_SetItem
#define PyDict_GetItemString WeDict_GetItemString
#define PyCallable_Check WeCallable_Check
#define PyArg_ParseTuple WeArg_ParseTuple
#define PyLong_AsLong WeLong_AsLong
#define PyObject_Call WeObject_Call
#define PyType_Ready WeType_Ready
#define PyCapsule_New WeCapsule_New
#define PyLong_FromLong WeLong_FromLong
#define PyModule_AddObject WeModule_AddObject
#define PyTuple_SetItem WeTuple_SetItem
#define PyFloat_FromDouble WeFloat_FromDouble
#define PyFloat_AsDouble WeFloat_AsDouble
#define PyTuple_New WeTuple_New
#define PyString_FromString WeString_FromString
#define PyCapsule_GetPointer WeCapsule_GetPointer
#define PyObject_TypeCheck WeObject_TypeCheck
#define PyObject_IsInstance WeObject_IsInstance
#define PySequence_Tuple WeSequence_Tuple

#define PyExc_Exception (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_Exception)
#define PyExc_StopIteration (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_StopIteration)
#define PyExc_MemoryError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_MemoryError)
#define PyExc_ImportError ((WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_ImportError))
#define PyExc_IndexError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_IndexError)
#define PyExc_KeyError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_KeyError)
#define PyExc_ValueError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_ValueError)
#define PyExc_TypeError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_TypeError)
#define PyExc_BufferError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_BufferError)
#define PyExc_RuntimeError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_RuntimeError)
#define PyExc_SystemError  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_SystemError)
#define PyExc_FutureWarning  (WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_FutureWarning)
#define PyExc_AttributeError ((WeObject *)WeType_FindTLSType((WeTypeObject *)WeExc_AttributeError))

#define PyErr_ExceptionMatches  WeErr_ExceptionMatches
#define PyErr_Fetch  WeErr_Fetch
#define PyErr_Restore  WeErr_Restore
#define PyBuffer_Release  WeBuffer_Release
#define PyObject_HasAttr  WeObject_HasAttr
#define PyObject_HasAttrString  WeObject_HasAttrString
#define PyObject_DelAttr  WeObject_DelAttr
#define PyObject_DelAttrString  WeObject_DelAttrString
#define PyObject_GetAttr  WeObject_GetAttr
#define PyErr_GivenExceptionMatches  WeErr_GivenExceptionMatches
#define PyErr_Clear  WeErr_Clear
#define PyObject_SetAttr  WeObject_SetAttr
#define PyObject_SetAttrString  WeObject_SetAttrString
#define PyObject_Hash  WeObject_Hash
#define PyObject_GetItem  WeObject_GetItem
#define PyObject_SetItem  WeObject_SetItem
#define PySequence_GetItem  WeSequence_GetItem
#define PySequence_SetItem  WeSequence_SetItem
#define PyList_GetItem  WeList_GetItem
#define PyList_SetItem  WeList_SetItem
#define PySequence_Fast_ITEMS  WeSequence_Fast_ITEMS
#define PyDict_Next  WeDict_Next
#define PyObject_GetIter  WeObject_GetIter
#define PyStaticMethod_Type  WeStaticMethod_Type
#define PyIter_Next  WeIter_Next
#define PyErr_Occurred  WeErr_Occurred
#define PyObject_Str  WeObject_Str
#define PyString_AsStringAndSize  WeString_AsStringAndSize
#define PyString_FromStringAndSize  WeString_FromStringAndSize
#define PyObject_IsTrue  WeObject_IsTrue
#define PyLong_AsUnsignedLong  WeLong_AsUnsignedLong
#define PyLong_FromUnsignedLong  WeLong_FromUnsignedLong
#define PyLong_AsLongLong  WeLong_AsLongLong
#define PyLong_FromLongLong  WeLong_FromLongLong
#define PyLong_AsLong  WeLong_AsLong
#define PyLong_AsUnsignedLongLong  WeLong_AsUnsignedLongLong
#define PyLong_FromUnsignedLongLong  WeLong_FromUnsignedLongLong
#define PyNumber_Long  WeNumber_Long
#define PyNumber_Float  WeNumber_Float
#define PySequence_Check  WeSequence_Check
#define PySequence_Size  WeSequence_Size
#define PySequence_List  WeSequence_List
#define PySlice_New  WeSlice_New
#define PySlice_GetIndicesEx  WeSlice_GetIndicesEx
#define PySlice_GetIndicesEx  WeSlice_GetIndicesEx
#define PyCapsule_GetContext  WeCapsule_GetContext
#define PyCapsule_SetContext  WeCapsule_SetContext
#define PyCapsule_GetName  WeCapsule_GetName
#define PyDict_Size  WeDict_Size
#define PyDict_Clear  WeDict_Clear
#define PyObject_CallFunctionObjArgs  WeObject_CallFunctionObjArgs
#define PySet_New  WeSet_New
#define PySet_Size  WeSet_Size
#define PySet_Clear  WeSet_Clear
#define PyStaticMethod_New  WeStaticMethod_New
#define PyObject_CheckBuffer  WeObject_CheckBuffer
#define PyObject_GetBuffer  WeObject_GetBuffer
#define PyWeakref_NewRef  WeWeakref_NewRef
#define PyDict_Type  WeDict_Type
#define PyList_New  WeList_New
#define PyList_Size  WeList_Size
#define PyMemoryView_FromBuffer  WeMemoryView_FromBuffer
#define PyObject_Length  WeObject_Length
#define PyObject_Repr  WeObject_Repr
#define PyThread_create_key  WeThread_create_key
#define PyGILState_Ensure  WeGILState_Ensure
#define PyGILState_Release  WeGILState_Release
#define PyEval_InitThreads  WeEval_InitThreads
#define PyThreadState  WeThreadState
#define PyThreadState_Get  WeThreadState_Get
#define PyThread_create_key  WeThread_create_key
#define PyThread_set_key_value  WeThread_set_key_value
#define PyMemoryView_FromObject  WeMemoryView_FromObject
#define PyEval_GetBuiltins  WeEval_GetBuiltins
#define PyList_Append  WeList_Append
#define PyMem_Free  WeMem_Free
#define PyErr_NormalizeException  WeErr_NormalizeException
#define PyFrame_GetLineNumber  WeFrame_GetLineNumber
#define PyType_IsSubtype  WeType_IsSubtype
#define PyNumber_Check  WeNumber_Check
#define PyInt_FromSsize_t  WeInt_FromSsize_t
#define PyString_Size  WeString_Size
#define _PyThreadState_Current  _WeThreadState_Current
#define PyProperty_Type  WeProperty_Type
#define PyType_Type  WeType_Type
#define _PyType_Lookup  _WeType_Lookup
#define PyBaseObject_Type  WeBaseObject_Type
#define _PyObject_GetDictPtr  _WeObject_GetDictPtr
#define PyInt_FromSize_t  WeInt_FromSize_t
#define PyObject_ClearWeakRefs  WeObject_ClearWeakRefs
#define PyErr_Format  WeErr_Format
#define PyObject_MALLOC  WeObject_MALLOC
#define PyCFunction_NewEx  WeCFunction_NewEx
#define PyMethod_New  WeMethod_New
#define PyDict_DelItemString  WeDict_DelItemString
#define PyModule_GetName  WeModule_GetName
#define PyImport_AddModule  WeImport_AddModule
#define PyImport_ImportModule  WeImport_ImportModule
#define PyImport_ReloadModule  WeImport_ReloadModule
#define PyEval_GetGlobals  WeEval_GetGlobals
#define PyErr_NewException  WeErr_NewException
#define PyThread_get_key_value  WeThread_get_key_value
#define PyGILState_GetThisThreadState  WeGILState_GetThisThreadState
#define PyThreadState_New  WeThreadState_New
#define PyEval_AcquireThread  WeEval_AcquireThread
#define PyErr_WarnEx  WeErr_WarnEx
#define PyThread_delete_key_value  WeThread_delete_key_value
#define PyThreadState_Clear  WeThreadState_Clear
#define PyThreadState_DeleteCurrent  WeThreadState_DeleteCurrent
#define PyEval_SaveThread  WeEval_SaveThread
#define PyEval_RestoreThread  WeEval_RestoreThread
#define PyFrame_FastToLocals  WeFrame_FastToLocals
#define PyDict_GetItem  WeDict_GetItem
#define PyObject_CallObject  WeObject_CallObject
#define PyObject_RichCompareBool  WeObject_RichCompareBool
#define PyNumber_Invert  WeNumber_Invert
#define PyNumber_Negative  WeNumber_Negative
#define PyNumber_Add  WeNumber_Add
#define PyNumber_InPlaceAdd  WeNumber_InPlaceAdd
#define PyNumber_Subtract  WeNumber_Subtract
#define PyNumber_InPlaceSubtract  WeNumber_InPlaceSubtract
#define PyNumber_Multiply  WeNumber_Multiply
#define PyNumber_InPlaceMultiply  WeNumber_InPlaceMultiply
#define PyNumber_TrueDivide  WeNumber_TrueDivide
#define PyNumber_InPlaceTrueDivide  WeNumber_InPlaceTrueDivide
#define PyNumber_Or  WeNumber_Or
#define PyNumber_InPlaceOr  WeNumber_InPlaceOr
#define PyNumber_And  WeNumber_And
#define PyNumber_InPlaceAnd  WeNumber_InPlaceAnd
#define PyNumber_Xor  WeNumber_Xor
#define PyNumber_InPlaceXor  WeNumber_InPlaceXor
#define PyNumber_Lshift  WeNumber_Lshift
#define PyNumber_InPlaceLshift  WeNumber_InPlaceLshift
#define PyNumber_Rshift  WeNumber_Rshift
#define PyNumber_InPlaceRshift  WeNumber_InPlaceRshift
#define PyDict_Contains  WeDict_Contains
#define PyLong_AsLongLongAndOverflow WeLong_AsLongLongAndOverflow
#define PySequence_Length WeSequence_Length
#define PySequence_Fast WeSequence_Fast
#define PySequence_Fast_GET_SIZE WeSequence_Fast_GET_SIZE
#define PyCFunction_Type WeCFunction_Type
#define PyType_FindTLSType WeType_FindTLSType
#define PyInterpreterState_Get WeInterpreterState_Get
